using System;
using System.ComponentModel;
using System.Threading;
namespace Coding4Fun.Phone.Controls
{
	public class MetroFlowData : INotifyPropertyChanged
	{
		private Uri uri_0;
		private string string_0;
		private PropertyChangedEventHandler propertyChangedEventHandler_0;
		public event PropertyChangedEventHandler PropertyChanged
		{
			add
			{
				PropertyChangedEventHandler propertyChangedEventHandler = this.propertyChangedEventHandler_0;
				PropertyChangedEventHandler propertyChangedEventHandler2;
				do
				{
					propertyChangedEventHandler2 = propertyChangedEventHandler;
					PropertyChangedEventHandler propertyChangedEventHandler3 = (PropertyChangedEventHandler)Delegate.Combine(propertyChangedEventHandler2, value);
					propertyChangedEventHandler = Interlocked.CompareExchange<PropertyChangedEventHandler>(ref this.propertyChangedEventHandler_0, propertyChangedEventHandler3, propertyChangedEventHandler2);
				}
				while (propertyChangedEventHandler != propertyChangedEventHandler2);
			}
			remove
			{
				PropertyChangedEventHandler propertyChangedEventHandler = this.propertyChangedEventHandler_0;
				PropertyChangedEventHandler propertyChangedEventHandler2;
				do
				{
					propertyChangedEventHandler2 = propertyChangedEventHandler;
					PropertyChangedEventHandler propertyChangedEventHandler3 = (PropertyChangedEventHandler)Delegate.Remove(propertyChangedEventHandler2, value);
					propertyChangedEventHandler = Interlocked.CompareExchange<PropertyChangedEventHandler>(ref this.propertyChangedEventHandler_0, propertyChangedEventHandler3, propertyChangedEventHandler2);
				}
				while (propertyChangedEventHandler != propertyChangedEventHandler2);
			}
		}
		public Uri ImageUri
		{
			get
			{
				return this.uri_0;
			}
			set
			{
				this.uri_0 = value;
				this.method_0("ImageUri");
			}
		}
		public string Title
		{
			get
			{
				return this.string_0;
			}
			set
			{
				this.string_0 = value;
				this.method_0("Title");
			}
		}
		private void method_0(string string_1)
		{
			if (this.propertyChangedEventHandler_0 != null)
			{
				this.propertyChangedEventHandler_0.Invoke(this, new PropertyChangedEventArgs(string_1));
			}
		}
	}
}
